/*
存在一个按升序排列的链表，给你这个链表的头节点 head ，请你删除链表中所有存在数字重复情况的节点，只保留原始链表中 没有重复出现 的数字。

返回同样按升序排列的结果链表。

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。


输入：head = [1,2,3,3,4,4,5]
输出：[1,2,5]

输入：head = [1,1,1,2,3]
输出：[2,3]
* */

var deleteDuplicates = function(head) {
  if(!head) return null;
  //设置虚拟头节点
  let ret = new ListNode(-1, head);

  let pre = ret, cur = head;
  while (cur && cur.next) {
    if (cur.next.val !== pre.next.val) { //第一次的话 cur.next.val 就是第二个节点， pre.next.val 就是第一个节点(因为我们设置了一个虚拟头节点)
      cur = cur.next;
      pre = pre.next;
    }else {
      while (cur && cur.next && cur.next.val === pre.next.val) { // 11112 这样的情况
        cur = cur.next;
      }
      pre.next = cur.next;
      cur = cur.next;
    }
  }

  return ret.next;
};
